247 put(OLDBX(W),OLDBY(W)),BALL:gosub 4005:if PINTA%=0 THEN GOTO 260
if (PINTA%=1) and (BY(W)<=50 and BY(W)>=38) then BYINC(W)=-BYINC(W):BY(W)=BY(W)+2*BYINC(W):sound 1000,.2 ELSE GOTO 251
if sgn(BYINC(W))=1 THEN FINAL%=FINAL%-200:if TOCADO=2 then goto 258 else TOCADO=1:goto 260 else 260
251 if (PINTA%=3) and (BY(W)<=50 and BY(W)>=36) then_
IF TOCADO=0 AND REPE<3 and sgn(BYINC(W))=1 and w=repe and sola=0 THEN REPE=REPE+1:final%=final%-1100:gosub 4301:play"mbl32n1abc":bol=2:goto 258 ELSE if sola=1 and sgn(byinc(w))=1 then sola=0:byinc(w)=-byinc(w):goto 258 else goto 258
if tocado=0 and repe=3 and by(1)<50 and by(2)<50 and by(3)<50 then sola=1
IF PINTA%=2 then if by(w)>=50 THEN sound 100,.9:final%=final%-25:toq=toq+1:goto 258 else 258
GOSUB 4000:if disp=1 and tib2>0 then gosub 4001
if PINTA%=1 THEN PAINT(BX(W)+p1,BY2+p2),3,0:sound 12000,.9:GOTO 253
253 gosub 4000:if disp=1 and tib2>0 then gosub 4001
254 PUNTOS&=PUNTOS&+(Pinta%*5):GOSUB 700
258 if bol=2 then bol=0:if palapg=1 then gosub 4301
BYINC(W)=-BYINC(W):BY(W)=BY(W)+2*BYINC(W)
260 PUT(BX(W),BY(W)),BALL:IF A$=DISPARO$ then if disp=1 and tib2<3 and tiro%(tib2)<140 then tib2=tib2+1:muerto1(tib2)=0:muerto2(tib2)=0:pxt(tib2)=PX:put(pxt(tib2)+7,174),bala,xor:put(pxt(tib2)+26,174),bala,xor:FINAL%=FINAL%-(300*tib2):_
tiro%(tib2)=174
261 for espera%=1 to final%:next :if final%<0 then final%=0:goto 190 else goto 190
280 timer off:SOUND 200,.3:SOUND 75,10
PUT(OLDBX(W),OLDBY(W)),BALL:if repe>1 then gosub 3000:pierde%(repe)=1:repe=repe-1:final%=final%+1100:if repe=1 then sola=1:GOTO 171 else gosub 4301:goto 171 else nballs=nballs-1:pierde%(1)=1:gosub 4301
goto 170
300 IF INKEY$<>"" THEN GOTO 300
310 A$=INKEY$:IF A$=DISPARO$ THEN for pausa%=1 to 5000:next:CHAIN "BLOCKS.EXE" ELSE GOTO 310
320 END
' R U T I N A S D E L P R O G R A M A
' IMPRESION DE LOS PUNTOS
700 IF PUNTOS&>99999 THEN PUNTOS&=0:PUNTOT&=20000:PUNTOT2&=0
LOCATE 24,3:IF PUNTOS&<10 THEN PRINT USING "0000#";PUNTOS&;:GOTO 720
IF PUNTOS&<100 THEN PRINT USING "000##";PUNTOS&;:GOTO 720
IF PUNTOS&<1000 THEN PRINT USING "00###";PUNTOS&;:GOTO 720
IF PUNTOS&<10000 THEN PRINT USING "0####";PUNTOS&;:GOTO 720
PRINT USING "#####";PUNTOS&;
720 IF PUNTOS&=>PUNTOT& THEN PUNTOT2&=PUNTOT2&+20000:PUNTOT&=PUNTOT&+PUNTOT2&:PLAY"MBL64ABCDCBA":nballs=nballs+1:goto 900
RETURN
' IMPRESION DE LOS BLOQUES
800 LOCATE 18,4:IF NBRKS<10 THEN PRINT USING"00#";NBRKS:GOTO 820
IF NBRKS<100 THEN PRINT USING"0##";NBRKS:GOTO 820
PRINT USING"###";NBRKS
820 IF NBRKS=0 THEN for PAUSA%=1 to 10000:next:N=N+2:pasopant=0:RETURN 140 ELSE RETURN
' IMPRESION DE NUMERO DE BOLAS
900 IF NBALLS>9 THEN NBALLS=9:RETURN
LOCATE 6,5:PRINT USING"#";NBALLS
IF NBALLS=0 THEN PLAY"N9N7N6N5N4N3N2N1N0":for pausa%=1 to 17000:next:RETURN 300 ELSE RETURN
' IMPRESION DE NUMERO DE PANTALLAS
950 LOCATE 12,4:IF PANT%<10 THEN PRINT USING"00#";PANT%:GOTO 980
IF PANT%<100 THEN PRINT USING"0##";PANT%:GOTO 980
PRINT USING"###";PANT%
980 RETURN
' MOVIMIENTO PISO,CUADRO Y PALA CON BOLA (AL INICIO)
1000 if CUCH%=80 then sound 10000,.3:DIR%=1 else if CUCH%=220 then sound 10000,.3:DIR%=2
if DIR%=1 then CUCH%=CUCH%+2:CC=2:put (CUCH%,42),PISO,pset
if DIR%=2 then CUCH%=CUCH%-2:CC=-2:put (CUCH%,42),PISO,pset
if TOCADO=0 then put(CUCH%+5,42),CUADRO2,pset
if TOCADO=1 then gosub 2000
if TOCADO=2 then gosub 2010:if NBALLS=0 then RETURN 171
1001 IF PIERDE%(W)=1 AND A$=PARAR$ THEN PIERDE%(W)=0:pauta=0:primera=0:return 190
IF PIERDE%(W)=1 and palapg=0 THEN gosub 4010:goto 1002
if palapg<>1 then return
IF BY(W)<175 or by(w)=>184 THEN return
if byinc(w)=-1 then return
IF BX(W)+3<pX+dis OR BX(W)>px+33-dis THEN return else pauta=0:byinc(w)=-byinc(w)
1002 pauta=pauta+1:if pauta=>69 then pauta=0:pierde%(w)=0:primera=0:return 190
if palapg=1 and a$=PARAR$ then primera=0:pauta=0:return
if demo=1 and pauta=>20 then pauta=70 else if demo=1 then gosub 4600
for pausa%=1 to final%:next:BXINC(W)=(PXINC-(sgn(PXINC))*sgn(PXINC)):BX2=BX(W):BX(W)=px+12:put(BX2,BY(W)),BALL,xor:put(BX(W),BY(W)),BALL,xor:RETURN 190
tiro%(tib)=tiro%(tib)-4:if tiro%(tib)=58 then goto 4120
IF muerto1(tib)=1 AND muerto2(tib)=1 THEN tiro%(tib)=0:GOTO 4120 ELSE IF muerto1(tib)=1 THEN GOTO 4115
IF POINT(pxt(tib)+7,tiro%(tib))=3 or POINT(pxt(tib)+7,tiro%(tib))=1 THEN sound 270,.5::gosub 4001:paint(pxt(tib)+7,tiro%(tib)),0:gosub 4001:muerto1(tib)=1:put(pxt(tib)+7,tiro%(tib)+4),bala,xor:puntos&=puntos&+100:_
GOSUB 700:nbrks=nbrks-1:gosub 800:goto 4115
IF POINT(pxt(tib)+7,tiro%(tib))=2 THEN put(pxt(tib)+7,tiro%(tib)+4),bala,xor:sound 170,.5:muerto1(tib)=1
4115 if muerto2(tib)=1 then goto 4117
IF POINT(pxt(tib)+26,tiro%(tib))=3 OR POINT(pxt(tib)+26,tiro%(tib))=1 THEN sound 270,.5::gosub 4001:PAINT(pxt(tib)+26,tiro%(tib)),0:gosub 4001:muerto2(tib)=1:put(pxt(tib)+26,tiro%(tib)+4),bala,xor:puntos&=puntos&+100:_
GOSUB 700:nbrks=nbrks-1:gosub 800:goto 4117
IF POINT(pxt(tib)+26,tiro%(tib))=2 THEN put(pxt(tib)+26,tiro%(tib)+4),bala,xor:sound 170,.5:muerto2(tib)=1
4117 IF muerto1(tib)=0 AND muerto2(tib)=0 THEN Put(pxt(tib)+7,tiro%(tib)),bala,xor:Put(pxt(tib)+26,tiro%(tib)),bala,xor:Put(pxt(tib)+7,tiro%(tib)+4),bala,xor:Put(pxt(tib)+26,tiro%(tib)+4),bala,xor:GOTO 4120
IF muerto1(tib)=0 THEN Put(pxt(tib)+7,tiro%(tib)),bala,xor:Put(pxt(tib)+7,tiro%(tib)+4),bala,xor ELSE IF muerto2(tib)=0 THEN Put(pxt(tib)+26,tiro%(tib)),bala,xor:Put(pxt(tib)+26,tiro%(tib)+4),bala,xor
4120 if tiro%(tib)<>0 and tiro%(tib)<>58 then goto 4130
SOUND tiro%(tib)+100,.2:if muerto1(tib)=0 then put(pxt(tib)+7,tiro%(tib)+4),bala,xor
if muerto2(tib)=0 then put(pxt(tib)+26,tiro%(tib)+4),bala,xor